﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Useful.Text
{
    public partial class TextHelper
    {
        // Взято из http://rsdn.ru/forum/dotnet/1178734.aspx

        //  Таблица Т. ГОСТ-а 7.79-2000  (http://orwell.ru/info/tliter.html)
        //    а - a       к - k       х - kh
        //    б - b       л - l       ц - c
        //    в - v       м - m       ч - ch
        //    г - g       н - n       ш - sh
        //    д - d       о - o       щ - shh
        //    е - e       п - p       ъ - "
        //    ё - jo      р - r       ы - y
        //    ж - zh      с - s       ь - '
        //    з - z       т - t       э - eh
        //    и - i       у - u       ю - ju
        //    й - jj      ф - f       я - ja

        private static readonly string[] TransTable = {
            "a", "b", "v", "g", "d", "e", "zh", "z", "i", "jj",
            "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f",
            "kh", "c", "ch", "sh", "shh", "\"", "y", "\'", "eh", "ju", "ja"
        };

        public static string Translit(string source)
        {
            StringBuilder sb = new StringBuilder(source.Length);
            for (int i = 0; i < source.Length; i++)
            {
                char ch = source[i];
                if (ch >= 'а' && ch <= 'я')
                    sb.Append(TransTable[(int)ch - (int)'а']);
                else if (ch >= 'А' && ch <= 'Я')
                    sb.Append(TransTable[(int)ch - (int)'А'].ToUpper());
                else if (ch == 'ё') sb.Append("jo");
                else if (ch == 'Ё') sb.Append("JO");
                else sb.Append(ch);
            }
            return sb.ToString();
        }
    }
}
